package com.aps.common.constant;

/**
 * @author jsy
 * @description: 全局常量
 * @date 2025/9/30 10:14
 */

public interface Constants {

    //加班开始小时
    String OVERTIME_START_HOUR = "overtimeStartHour";
    //加班结束小时
    String OVERTIME_END_HOUR = "overtimeEndHour";
    //正常工作开始小时
    String WORK_START_HOUR = "workStartHour";
    //上午工作结束小时
    String FORENOON_WORK_END_HOUR = "forenoonWorkEndHour";
    //下午工作开始小时
    String AFTERNOON_WORK_START_HOUR = "afternoonWorkStartHour";
    //正常工作结束小时
    String WORK_END_HOUR = "workEndHour";


    /**
     * 算法配置项
     */
    //基因序列全排列种群数量超过这这个数时，则选择部种群
    String MAX_PERMUTATION_THRESHOLD = "maxPermutationThreshold";
    //种群大小：每次迭代的染色体数量
    String POPULATION_SIZE = "populationSize";
    //交叉率：控制染色体交叉的概率
    String CROSSOVER_RATE = "crossoverRate";
    //变异率：控制基因变异的概率
    String MUTATION_RATE = "mutationRate";
    //最大迭代代数：遗传算法终止条件
    String MAX_GENERATIONS = "maxGenerations";
    //锦标赛选择数：遗传算法中锦标赛选择的数量
    String TOURNAMENT_SIZE = "tournamentSize";
    //精英比例
    String ELITE_RATIO = "eliteRatio";


    /**
     * 约束配置项
     */
    //约束名称
    String CONSTRAINT_NAME = "constraintName";
    //约束id名称
    String CONSTRAINT_ID = "constraintId";
    //排产开始时间
    String GLOBAL_START_TIME = "globalStartTime";
    //是否加班 0 不加班 1 加班
    String IS_OVERTIME = "isOvertime";
    //交期权重 (double)
    String DELIVERY_RATE = "deliveryRate";
    //设备利用率权重 (double)
    String EQUIPT_USE_PROBABILITY_RATE = "equiptUseProbabilityRate";
    //工作时段 Map<Integer,ApsDayOfWeek>  key:星期几 （1-7） ， ApsDayOfWeek 对应的 上班时段列表 和 加班时段对象
    String WORK_INFO = "workInfo";
}
